home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / doc / manual / volume3 / idx2ind next >
Encoding:
Text File  |  1989-10-24  |  1.4 KB  |  54 lines

  1. #! /bin/sh
  2. : 'idx2ind - new LaTeX index converter - 11-Jul-88/JLR'
  3.  
  4. L=%%
  5. case x$1 in
  6.   x-l) L=""; shift ;;
  7. esac
  8.  
  9. for i
  10. do
  11.   awk 'BEGIN {for (i = 97; i < 123; i++)    # index letters "a" to "z"
  12.         printf "%c\n", i; exit}' |\
  13.   cat - $i.idx |\
  14.   sed \
  15.     -e 's/    / /g'\
  16.     -e 's/^\\indexentry{\(.*\)}{\([^}]*\)}$/\1    \2/'\
  17.     -e 's/^\\verb\(.\)\(.*\)\1    \(.*\)$/\2    \3    \\verb\1\2\1/'\
  18.     -e '/\\/!s/ *{}//'\
  19.     -e '/,/{;s/^\(.*\)    \(.*\)$/\1    \2    \1/;s/,/ /;}' |\
  20.   sort -u -t"    " +0fd -1 +1n |\
  21.   awk -F"    " '
  22. BEGIN    {printf "\\begin{theindex}\\makeatletter\n"
  23.     printf "\\raggedright\n"
  24.     printf "\\def\\newindex#1{{\\huge\\hspace{-.5in}"
  25.     printf "\\parbox[t]{.5in}{\\makebox[.35in][c]{\\uppercase{#1}}}"
  26.     printf "\\vspace{-1.5ex}}}\n"
  27.     }
  28. NF == 1    {x = $1; next}                # NF=1: index letter
  29.     {n = $1}
  30. NF == 3    {n = $3}                # NF=3: special sort key
  31. n == p    {printf ", %s", $2; next}        # another page number
  32. p != ""    {printf "\n"}                # end of this item
  33. x != ""    {if (p != "")                # index letter?
  34.         printf "\\indexspace\n"
  35.     printf "'$L'\\newindex{%s}\n", x
  36.     }
  37.     {x = s = ""; i = n; l = $2}        # reset
  38. /,/    {s = "sub"                # sub-item
  39.     nf = split (i, a, ","); k = a[1]; i = a[2]
  40.     split (p, pk, ",")
  41.     if (pk[1] != k && pk[1] != k"{}")    # should use substr...
  42.         {i = n; s =""}
  43.     else for (j = 3; j <= nf; j++)         # add sub-sub-items
  44.         i = sprintf ("%s,%s", i, a[j])
  45.     }
  46.     {printf "\\%sitem %s, %s", s, i, l}
  47.     {p = n}                    # save for next comparison
  48. END    {printf "\n\\end{theindex}\n"
  49.     }' > $i.ind
  50.  
  51. done
  52.  
  53. exit 0
  54.